package com.aims.server.service.convert;

import com.aims.api.dto.UserDTO;
import com.aims.api.entity.User;
import org.springframework.beans.BeanUtils;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * 用户对象转换器
 *
 * @author Generator
 * @since 2025-10-22
 */
public class UserConverter {

    /**
     * Entity 转 DTO
     *
     * @param entity 实体对象
     * @return DTO对象
     */
    public static UserDTO toDTO(User entity) {
        if (entity == null) {
            return null;
        }

        UserDTO dto = new UserDTO();
        BeanUtils.copyProperties(entity, dto);
        return dto;
    }

    /**
     * DTO 转 Entity
     *
     * @param dto DTO对象
     * @return 实体对象
     */
    public static User toEntity(UserDTO dto) {
        if (dto == null) {
            return null;
        }

        User entity = new User();
        BeanUtils.copyProperties(dto, entity);
        return entity;
    }

    /**
     * Entity 列表转 DTO 列表
     *
     * @param entities 实体列表
     * @return DTO列表
     */
    public static List<UserDTO> toDTOList(List<User> entities) {
        if (entities == null || entities.isEmpty()) {
            return Collections.emptyList();
        }

        List<UserDTO> dtoList = new ArrayList<>(entities.size());
        for (User entity : entities) {
            dtoList.add(toDTO(entity));
        }
        return dtoList;
    }

    /**
     * DTO 列表转 Entity 列表
     *
     * @param dtos DTO列表
     * @return 实体列表
     */
    public static List<User> toEntityList(List<UserDTO> dtos) {
        if (dtos == null || dtos.isEmpty()) {
            return Collections.emptyList();
        }

        List<User> entityList = new ArrayList<>(dtos.size());
        for (UserDTO dto : dtos) {
            entityList.add(toEntity(dto));
        }
        return entityList;
    }
}